fn parse_num_str(num_str: &str) -> Result<(String, u32), String> {
    // 检查是否符合格式 "number(base)" 的形式
    if let Some((number_part, base_part)) = num_str.split_once('(') {
        // 去掉右括号并解析基数
        if let Some(base_str) = base_part.strip_suffix(')') {
            if let Ok(base) = base_str.parse::<u32>() {
                return Ok((number_part.to_string(), base));
            }
        }
    }
    Err("Invalid format, expected format: number(base)".to_string())
}


pub fn convert_base(num_str: &str, to_base: u32) -> String {

    let (number_str,from_base) = parse_num_str(num_str).unwrap(); 

    let mut decimal_num = match u32::from_str_radix(&number_str, from_base) {
        Ok(num) => num,
        Err(_) => return "Invalid number".to_string(),
    };

    // 处理特殊情况，当数字为 0 时，直接返回 "0"
    if decimal_num == 0 {
        return "0".to_string();
    }
    
    // 处理特殊情况，当基数为 10 时，直接返回原数字
    if to_base == 10 {
        return decimal_num.to_string();
    }

    let digits ="0123456789abcdef";
    let mut result = String::new();

    // 转换为目标基数的数字
    while decimal_num > 0  {
        let remainder = (decimal_num % to_base) as usize;
        result.insert(0, digits.chars().nth(remainder).unwrap());
        decimal_num /= to_base;
    }

    result
    
}
